package com.macro.mall.portal.service;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.macro.mall.common.api.CommonResult;
import com.macro.mall.portal.domain.User;
import com.macro.mall.portal.domain.UserIncome;
import com.macro.mall.portal.domain.vo.PageVo;
import com.macro.mall.portal.domain.vo.TotalVo;
import com.macro.mall.portal.dto.VxUserDto;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author db
 * @since 2021-07-04
 */
public interface IUserService extends IService<User> {
    /**
     * 注册
     *
     * @param
     */
    @Transactional
    void registered(User user);

    /**
     * 用户信息
     *
     * @param openId
     * @return
     */
    User userInfo(String openId);

    VxUserDto userInfos(User user);

    /**
     * 上级信息
     *
     * @param
     * @return
     */
    User superInfo(String shareCode);

    /**
     * 修改用户数据
     *
     * @param user
     * @param wrapper
     */
    void update(User user, UpdateWrapper<User> wrapper);

    /**
     * 用户专属二维码
     */
    CommonResult qrCode(User user);

    /**
     * 修改资料
     *
     * @param user
     */
    @Transactional
    void bind(User user);

    /**
     * 绑定银行卡
     *
     * @param user
     */
    @Transactional
    void bank(User user);


    CommonResult getIncome(PageVo pageVo);

    /**
     * 查询列表
     *
     * @param pageVo
     * @return
     */
    PageInfo<UserIncome> getPageListIncome(PageVo pageVo);

    /**
     * 数据统计
     *
     * @param pageVo
     * @return
     */
    CommonResult getDIncome(TotalVo vo);

    CommonResult getDInfo(PageVo vo);

    void bindUser(User vxUser);
}
